/// @tags: DP Gauss
#include <algorithm>
#include <cassert>
#include <cstdio>
#include <iomanip>
#include <iostream>
#define rint register int

using std::abs;
using std::cin;
using std::cout;

namespace BlueQuantum {

constexpr int maxn = 113;

int T, n, m, k;
double a[maxn][maxn];

inline int id(int x, int y) { return (x - 1) * (m + 1) + y; }

inline void gauss(int rcnt) {
  for (int i = 0; i < rcnt; ++i) {
    int tar = i;
    for (int j = i; j < rcnt; ++j) {
      if (abs(a[j][i]) > abs(a[tar][i])) tar = j;
    }
    std::swap(a[tar], a[i]);
    for (int j = rcnt; j >= i; --j) a[i][j] /= a[i][i];
    for (int j = 0; j < rcnt; ++j) {
      if (j != i) {
        for (int k = rcnt; k >= i; --k) {
          a[j][k] -= a[i][k] * a[j][i];
        }
      }
    }
  }
}

inline int main() {
  cin >> T >> n >> m >> k;
  int rcnt = 0;
  for (int i = 2; i <= n; ++i) {
    ++rcnt;
    decltype(a[rcnt]) &b = a[rcnt];
    b[id(i, m)] += 1;
  }
  for (int i = 0; i < m; ++i) {
    ++rcnt;
    decltype(a[rcnt]) &b = a[rcnt];
    b[id(1, i)] += 1;
    b[id(1, i + 1)] += -0.25;
    b[id(n - 2, 1)] += -0.75;
  }
  for (int i = 0; i < m; ++i) {
    ++rcnt;
    decltype(a[rcnt]) &b = a[rcnt];
    b[id(2, i)] += 1;
    b[id(1, 1)] += -0.25;
    b[id(n - 2, i + 1)] += -0.25;
    b[id(n - 1, 1)] += -0.5;
  }
  for (int i = 0; i < m; ++i) {
    ++rcnt;
    decltype(a[rcnt]) &b = a[rcnt];
    b[id(3, i)] += 1;
    b[id(1, 1)] += -0.25;
    b[id(n - 1, i + 1)] += -0.25;
    b[id(n - 1, 1)] += -0.25;
    b[id(n, 1)] += -0.25;
  }
  for (int i = 0; i < m; ++i) {
    ++rcnt;
    decltype(a[rcnt]) &b = a[rcnt];
    b[id(4, i)] += 1;
    b[id(1, 1)] += -0.25;
    b[id(n, i + 1)] += -0.25;
    b[id(n, 1)] += -0.5;
  }
  for (int i = 5; i <= n; ++i) {
    for (int j = 0; j < m; ++j) {
      ++rcnt;
      decltype(a[rcnt]) &b = a[rcnt];
      b[id(i, j)] += 1;
      b[id(i - 3, j + 1)] += -0.25;
      b[id(i - 3, 1)] += -0.75;
    }
  }
  a[0][id(1, m)] += 1, a[0][rcnt + 1] += 1;
  gauss(rcnt + 1);
  cout << std::fixed << std::setprecision(6) << a[id(k, 0)][rcnt + 1];
  return 0;
}

}  // namespace BlueQuantum

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("/tmp/CodeTmp/testdata.in", "r", stdin);
  freopen("/tmp/CodeTmp/testdata.out", "w", stdout);
#else
  freopen("P5415 [YNOI2019] 游戏.in", "r", stdin);
  freopen("P5415 [YNOI2019] 游戏.out", "w", stdout);
#endif
#endif

  std::ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  return BlueQuantum::main();
}
